Geometric camera calibration is provided to set or adjust camera parameters to accurately map real 3D points in a scene into 2D image coordinates of the camera. The mapping may be used to create a measurable virtual 3D space with the objects in the scene. This calibration is important to provide accurate 3D mapping for a variety of computer vision applications such as 3D scanning or measuring the size of objects from an image, depth estimation for artificial intelligence (AI) vision systems, and so forth.
Whether by calibrating a golden (or ideal) device or specific camera products, carefully controlled factory calibration may be performed where the 3D points of an object, such as a checker board, are placed in front of one or more cameras at measured distances from the camera(s) to capture the image of the object. The computed 3D points are determined from the image data and then compared to the actual 3D points of the object. Any differences in 3D position for the same points are then compensated for by adjusting the parameters of the camera.
Due to manufacturing tolerances, however, a single device may have distortions or variances (from the ideal) in zoom, focal length, optical axis position (e.g., center point shift) or rotational shift that are not adequately compensated by the factory calibration. This is particularly true with devices that have multiple on-board cameras such as tablets. In some cases, the user is limited to sending the device back to the manufacturer for recalibration when the camera 3D mapping is insufficient. In some other cases, on-board self-calibration is provided and includes having a user activate the camera to capture images, and then 3D points projected from the 2D points on the images as well as new parameter settings for the camera are calculated from real 3D points of objects in the scene being photographed or recorded. The self-calibration typically uses an image of a natural scene (rather than requiring the user to set an object of known dimensions in the image). This self-calibration, however, can be inaccurate depending on the content of the image.